Una exploración en profundidad sobre el aprendizaje automático para la creación de modelos predictivos
Autor/a
Grupo A
Fecha de publicación
16 de diciembre de 2024
1 Introducción
En el contexto del análisis de datos y aprendizaje automático, herramientas como ImageJ, Anaconda, Python y Label Studio desempeñan un papel crucial. Cada una ofrece funcionalidades específicas para diferentes etapas de un proyecto: desde la adquisición y preprocesamiento de imágenes hasta la anotación de datos y el entrenamiento de modelos. Este informe presenta una guía detallada sobre la instalación, configuración y uso de estas herramientas. Además, se explicará el procedimiento para entrenar un modelo con datos anotados en Label Studio, integrándolos a un entorno en RStudio.
2 Programas
2.1 ImageJ
ImageJ es un software de código abierto diseñado para el análisis de imágenes multidimensionales. Es ampliamente utilizado en investigaciones biomédicas y científicas debido a su capacidad para realizar tareas como la medición de áreas, el conteo de partículas y la aplicación de transformaciones a imágenes.
Descripción de la imagen
Usos principales
Análisis cuantitativo de imágenes (medición de áreas, perímetros y más).
Aplicación de filtros para mejorar la calidad de las imágenes.
Automatización de tareas repetitivas mediante macros.
Segmentación de regiones específicas en imágenes.
2.2 Anaconda
Anaconda es una distribución de Python y R que simplifica la gestión de bibliotecas y entornos de desarrollo. Incluye herramientas como Jupyter Notebook y Spyder, y se utiliza principalmente en análisis de datos, aprendizaje automático y otras aplicaciones científicas.
Usos principales - Creación de entornos virtuales independientes.
Instalación de herramientas como Jupyter Notebook y bibliotecas para análisis y aprendizaje automático (Scikit-learn, TensorFlow, etc.).
Gestión eficiente de proyectos con distintas configuraciones.
2.3 Label Studio
Label Studio es una herramienta de código abierto para la anotación de datos. Permite realizar tareas de etiquetado en texto, imágenes, audio y video, facilitando la creación de conjuntos de datos listos para el entrenamiento de modelos de aprendizaje automático.
Usos principales - Creación de conjuntos de datos etiquetados para entrenar modelos de IA.
Colaboración en equipo para garantizar anotaciones consistentes.
Exportación de datos en formatos como JSON o CSV para integrarlos en flujos de trabajo de aprendizaje automático.
3 Instalación de herramientas para anotación de datos
3.1 Instalación de Anaconda
Descargar el instalador desde https://www.anaconda.com/
Ejecutar el archivo descargado
Seguir las instrucciones del instalador
Verificar la instalación ejecutando conda list en el terminal
3.2 Instalación de Label Studio
Label Studio ofrece cuatro métodos de instalación: a través de pip, brew, Git y Docker. En esta guía, nos centraremos en el método de instalación de pip. Para instalar Label Studio a través de pip, ejecute el siguiente comando:
pip install label-studio
Una vez que haya instalado Label Studio, puede ejecutar la aplicación utilizando el siguiente comando:
label-studio
Se abrirá la aplicación Label Studio:
Descripción de la imagen
Cuando abras Label Studio por primera vez, se te solicitará que crees una cuenta. Haz clic en “Registrarse” si aún no tienes una cuenta.
4 Subir imágenes a Label Studio
Antes de cargar imágenes para realizar anotaciones, debemos crear un proyecto en el que se almacenarán nuestras imágenes. Haga clic en el botón “Crear proyecto” en la página de inicio de Label Studio:
Descripción de la imagen
A continuación, elija un nombre para su proyecto. Si lo desea, especifique una descripción para su proyecto.
Descripción de la imagen
A continuación, haga clic en Data import. Aquí, puede cargar imágenes y videos en una variedad de formatos para usar en el etiquetado.
Descripción de la imagen
Puede cargar hasta 100 imágenes a la vez mediante la interfaz web.
A continuación, haga clic en “Configuración de etiquetado” y elija un tipo de tarea.En nuestro caso elegimos Semantic Segmentation with Polygons
Una vez que haya seleccionado un tipo de tarea, aparecerá una interfaz de usuario del entorno de etiquetado para el tipo de tarea elegido.
En la barra lateral, elimine las etiquetas predeterminadas y agregue las etiquetas que agregará a las imágenes en su conjunto de datos. Para esta guía, agregaremos dos etiqueta:
leaf
coin
Cuando esté listo, haga clic en “Guardar” para guardar su configuración e ingresar a la herramienta de etiquetado.
Para comenzar a etiquetar, haz clic en “Etiquetar todas las tareas” en el panel de control de tu proyecto. Si quieres etiquetar una imagen específica, haz clic en la imagen que deseas etiquetar.
5 Anotación en Label Studio
6 Cómo exportar datos de Label Studio
Para exportar datos desde Label Studio, dirígete a la página de inicio de tu proyecto y haz clic en el botón Export. Aparecerá una lista de opciones de exportación.
7 Entrenamiento del modelo de aprendizaje
Código
library(caret)
Cargando paquete requerido: ggplot2
Cargando paquete requerido: lattice
Código
library(dplyr)
Adjuntando el paquete: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ purrr::flatten() masks jsonlite::flatten()
✖ dplyr::lag() masks stats::lag()
✖ purrr::lift() masks caret::lift()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Código
library(rpart)library(rpart.plot)# Ruta al archivo JSON (ajusta esta ruta)json_file <-"result.json"# Cargar y explorar los datosraw_data <-fromJSON(json_file, flatten =TRUE)# Preparar los datosannotations <- raw_data$annotations %>%as.data.frame()images <- raw_data$images %>%as.data.frame()categories <- raw_data$categories %>%as.data.frame()# Relacionar las tablas mediante "image_id" y "category_id"data <- annotations %>%left_join(images, by =c("image_id"="id")) %>%left_join(categories, by =c("category_id"="id"))# Seleccionar columnas relevantes (puedes ajustar según tu necesidad)data <- data %>%select(file_name, width, height, category_id, name) %>%mutate(category_id =as.factor(category_id),name =as.factor(name))# Dividir los datos en conjuntos de entrenamiento y pruebaset.seed(123)train_index <-createDataPartition(data$category_id, p =0.8, list =FALSE)train_data <- data[train_index, ]test_data <- data[-train_index, ]# Entrenar un modelo de clasificación (Árbol de decisión)modelo <-rpart(category_id ~ width + height, data = train_data, method ="class")# Visualizar el árbol de decisiónrpart.plot(modelo)
Código
# Evaluar el modelopredicciones <-predict(modelo, newdata = test_data, type ="class")matriz_confusion <-confusionMatrix(predicciones, test_data$category_id)print(matriz_confusion)
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 0 0
1 9 9
Accuracy : 0.5
95% CI : (0.2602, 0.7398)
No Information Rate : 0.5
P-Value [Acc > NIR] : 0.592735
Kappa : 0
Mcnemar's Test P-Value : 0.007661
Sensitivity : 0.0
Specificity : 1.0
Pos Pred Value : NaN
Neg Pred Value : 0.5
Prevalence : 0.5
Detection Rate : 0.0
Detection Prevalence : 0.0
Balanced Accuracy : 0.5
'Positive' Class : 0
Código
# Guardar el modelo entrenadosaveRDS(modelo, "modelo_clasificacion_hojas.rds")
8 Conclusiones
Con Label Studio, puede anotar datos para una variedad de tipos de tareas de aprendizaje automático, desde el procesamiento del lenguaje natural hasta la visión artificial. Label Studio ofrece dos opciones: Community Edition, donde usted mismo hospeda la herramienta de anotación, y Enterprise, donde Human Signal ofrece una versión hospedada de Label Studio con funciones adicionales.
9 Bibliografía
Challenger Pérez, Ivet, Yanet Díaz Ricardo, and Roberto Antonio Becerra García. 2014. “El Lenguaje de Programación Python/The Programming Language Python.” Revista Ciencias Holguín 20:1–13.
Gomez Ernesto, Soto. 2021. “Python En Ingeniería En Ciencias Informáticas: Proyecciones Las Dimensiones Práctica, Científica y Social.” Serie Científica de La Universidad de Las Ciencias Informáticas 14(12):7–8.
Martín, Enrique, and Fernando Sáenz. 2016. “Sistema ANACONDA Para El Análisis Automático de La Calidad Del Software.” Telefónica Móviles España.
Abràmoff, M., Magalhães, P. J., & Ram, S. (2004). Image processing with ImageJ. Kakkar, G. T., Rajoria, A., Kalluraya, M. P., Raju, A., Cao, J., Rong, K., & Arulraj, J. (2023). Interactive Demonstration of EVA. Proceedings of the VLDB Endowment, 16(12), 4082–4085. https://doi.org/10.14778/3611540.3611626
Schroeder, A. B., Dobson, E. T. A., Rueden, C. T., Tomancak, P., Jug, F., & Eliceiri, K. W. (2020). The ImageJ ecosystem: Open‐source software for image visualization, processing, and analysis. Protein Science, 30(1), 234–249. https://doi.org/10.1002/PRO.3993
Tessmer, M. H., & Stoll, S. (2022). chiLife: An open-source Python package for in silico spin labeling and integrative protein modeling. BioRxiv, 19(3). https://doi.org/10.1371/JOURNAL.PCBI.1010834
Weistrand, O., & Svensson, S. (2015). The ANACONDA algorithm for deformable image registration in radiotherapy. Medical Physics, 42(1), 40–53. https://doi.org/10.1118/1.4894702